package 每日一题;

import com.sun.org.apache.bcel.internal.generic.IF_ACMPEQ;
import sun.plugin.viewer.LifeCycleManager;

import java.util.HashMap;
import java.util.Map;

/**
 * 387. 字符串中的第一个唯一字符
 */
public class Date1223 {

    public static void main(String[] args) {
        Date1223 test = new Date1223();
        test.firstUniqChar("leetcode");
    }
    /**
     * 自解：使用map来做 key是索引值 value则是字符 依次遍历s  如果containvalue 就直接删除
     * 最终返回第一个有value的
     * ---问题：如果是奇数 第三次又push进去了
     * ---如果有了 直接map的value置空
     * ---修改 key存字符串 value存index 如果key重复 value设-1； 最后遍历 第一个不为-1的数
     * @param s
     * @return
     */
    public int firstUniqChar(String s) {

        if (s == null || s.length() == 0){
            return -1;
        }
        if (s.length()==1){
            return 0;
        }

        Map<Character,Integer> map = new HashMap<>();
        for (int i=0;i<s.length();i++){
            if (!map.containsKey(s.charAt(i))  ){
                map.put(s.charAt(i),i);
            }else {
                map.put(s.charAt(i),-1);
            }
        }

        int min = Integer.MAX_VALUE;
        for (int index: map.values()){
            if (index != -1){
               if (index < min){
                   min = index;
               }
            }
        }


        return min == Integer.MAX_VALUE?-1:min;

    }

    /**
     * 题解：
     * 思路1：两次遍历
     * 思路2--直接就用数组 两次遍历
     */

}
